/**
 * Copyright (c) 2020 Coder League
 * All rights reserved.
 *
 * File：AreaDaoExtension.java
 * History:
 *         2020年12月21日: Initially created, Chrise.
 */
package club.coderleague.cfss.dao.extension;

import java.util.List;
import java.util.Map;

import club.coderleague.cfss.domain.entities.Areas;
import club.coderleague.data.jpa.repository.DataRepositoryExtension;

/**
 * 区域数据访问对象扩展。
 * @author Chrise
 */
public interface AreaDaoExtension extends DataRepositoryExtension {
	/**
	 * 分页查询区域。
	 * @author Chrise 2020年12月21日
	 * @param isrecycle 是否回收站。
	 * @param keyword 关键字。
	 * @return 分页区域数据。
	 */
	List<Areas> findAllByParamsMap(boolean isrecycle, String keyword);
	
	/**
	 * 查询所有区域。
	 * @author Chrise 2020年12月21日
	 * @return 区域数据。
	 */
	List<Map<String, Object>> findAllMap();
	
	/**
	 * 根据区域名称和父级区域查询除指定主键外是否存在。
	 * @author Chrise 2020年12月21日
	 * @param areaname 区域名称。
	 * @param areacode 区域编码。
	 * @param parentarea 父级区域。
	 * @param entityid 区域主键。
	 * @return 查重结果。
	 */
	boolean existsByAreanameAndParentareaNotEntityid(String areaname, String areacode, Long parentarea, Long entityid);
	
	/**
	 * 查询指定区域编码的标识。
	 * @author Chrise 2021年3月12日
	 * @param areacode 区域编码。
	 * @return 区域标识。
	 */
	Long queryIdByCode(String areacode);
	
	/**
	 * 根据区域主键查询区域。
	 * @author Chrise 2020年12月21日
	 * @param entityid 区域主键。
	 * @return 区域数据。
	 */
	Map<String, Object> findMapByEntityid(Long entityid);
	
	/**
	 * 获取用于移动端选择的区域。
	 * @author Chrise 2020年12月26日
	 * @param parent 父级区域。
	 * @return 区域数据。
	 */
	List<Map<String, Object>> getAreasForMobileSelect(Long parent);
}
